package com.lh.utils;

import java.text.DecimalFormat;

public class DecimalFormatUtils {

    /**
     * 将数字格式化为指定小数位数（四舍五入）
     * @param number 待格式化的数字（支持 Integer、Double、Float 等）
     * @param scale 保留的小数位数
     * @return 格式化后的数字（若输入为 null 则返回 null）
     */
    public static Double formatDecimal(Number number, int scale) {
        if (number == null) {
            return null;
        }
        // 兼容低版本 Java：手动拼接小数位数模板（如 scale=1 则为 "#0.0"）
        StringBuilder pattern = new StringBuilder("#0.");
        for (int i = 0; i < scale; i++) {
            pattern.append("0");
        }
        DecimalFormat df = new DecimalFormat(pattern.toString());
        // 解析为 Double 类型
        return Double.parseDouble(df.format(number));
    }


    public static String formatDecimal(String numberStr, int scale) {
        if (numberStr == null || numberStr.trim().isEmpty()) {
            return null; // 空值直接返回 null（或根据需求返回 "0.0"）
        }
        try {
            // 将字符串转为数字
            double number = Double.parseDouble(numberStr.trim());
            // 拼接格式化模板（如 scale=1 → "#0.0"）
            StringBuilder pattern = new StringBuilder("#0.");
            for (int i = 0; i < scale; i++) {
                pattern.append("0");
            }
            DecimalFormat df = new DecimalFormat(pattern.toString());
            return df.format(number);
        } catch (NumberFormatException e) {
            // 若字符串不是有效数字，返回原值或处理异常
            return numberStr;
        }
    }


}